def calc_prod(lst):
    def lazy_prod():
        def f(x,y):
            return x * y
        return reduce(f,lst,1)
    return lazy_prod

f = calc_prod([3,2,4,1])

print f()
